Apache POI একটি শক্তিশালী লাইব্রেরি যা Microsoft Word ডকুমেন্ট (DOC, DOCX) ম্যানিপুলেশনের জন্য ব্যবহৃত হয়। যদিও POI মূলত DOCX ফরম্যাটের জন্য ডিজাইন করা হয়েছে, এটি কিছু পুরনো ফরম্যাট যেমন DOC এর জন্যও সমর্থন প্রদান করে। এই ফিচারটি Compatibility Management এর মাধ্যমে ব্যবহৃত হয়, যেখানে বিভিন্ন ফাইল ফরম্যাটের মধ্যে সঠিকভাবে কাজ করা হয়।
এই লেখায়, আমরা আলোচনা করব কীভাবে Apache POI ব্যবহার করে বিভিন্ন Word ফরম্যাট (DOC এবং DOCX)-এর মধ্যে কমপ্যাটিবিলিটি ম্যানেজ করা যায় এবং প্রয়োজনীয় কনভার্শন বা প্রক্রিয়া সম্পাদন করা যায়।
DOC ফরম্যাটে কাজ করার জন্য Apache POI-র একটি আলাদা সাব-প্রজেক্ট রয়েছে, যা HWPF নামে পরিচিত। HWPF লাইব্রেরি ব্যবহার করে আপনি পুরনো Word DOC ফাইলগুলির কনটেন্ট পেতে বা সম্পাদনা করতে পারেন। কিন্তু এটি কিছু সীমাবদ্ধতার কারণে DOCX এর তুলনায় কম কার্যকরী।
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.Range;
import java.io.FileInputStream;
import java.io.IOException;
public class ReadDocFile {
public static void main(String[] args) throws IOException {
// DOC ফাইল লোড করা
HWPFDocument document = new HWPFDocument(new FileInputStream("old_document.doc"));
// Document থেকে Range বের করা
Range range = document.getRange();
// ডকুমেন্টের কনটেন্ট প্রিন্ট করা
System.out.println(range.text());
}
}
এই কোডটি DOC ফরম্যাটে থাকা ফাইলের কনটেন্ট পড়বে এবং প্রিন্ট করবে।
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.Range;
import java.io.FileOutputStream;
import java.io.IOException;
public class WriteDocFile {
public static void main(String[] args) throws IOException {
// একটি নতুন DOC ফাইল তৈরি করা
HWPFDocument document = new HWPFDocument();
Range range = document.getRange();
// নতুন টেক্সট লেখা
range.insertAfter("This is a new text in DOC format.");
// নতুন DOC ফাইল সেভ করা
try (FileOutputStream out = new FileOutputStream("new_document.doc")) {
document.write(out);
}
}
}
এই কোডে, একটি DOC ফাইলে নতুন টেক্সট যুক্ত করা হচ্ছে এবং নতুন ফাইল সেভ করা হচ্ছে।
Apache POI-এর XWPF লাইব্রেরি আধুনিক DOCX ফরম্যাটের জন্য ডিজাইন করা হয়েছে এবং এটি সম্পাদন, রিড, এবং লেখার জন্য খুবই কার্যকর। XWPF লাইব্রেরি ব্যবহার করে আপনি DOCX ফরম্যাটে ডকুমেন্টের কনটেন্ট ম্যানিপুলেট করতে পারবেন।
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import java.io.FileInputStream;
import java.io.IOException;
public class ReadDocxFile {
public static void main(String[] args) throws IOException {
// DOCX ফাইল লোড করা
XWPFDocument document = new XWPFDocument(new FileInputStream("document.docx"));
// সমস্ত Paragraph গুলি পড়া
for (XWPFParagraph paragraph : document.getParagraphs()) {
System.out.println(paragraph.getText());
}
}
}
এই কোডটি DOCX ফাইল থেকে সমস্ত প্যারাগ্রাফের কনটেন্ট পড়বে এবং প্রিন্ট করবে।
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import java.io.FileOutputStream;
import java.io.IOException;
public class WriteDocxFile {
public static void main(String[] args) throws IOException {
// একটি নতুন DOCX ডকুমেন্ট তৈরি করা
XWPFDocument document = new XWPFDocument();
// একটি নতুন Paragraph তৈরি করা
XWPFParagraph paragraph = document.createParagraph();
paragraph.createRun().setText("This is a new text in DOCX format.");
// নতুন DOCX ফাইল সেভ করা
try (FileOutputStream out = new FileOutputStream("new_document.docx")) {
document.write(out);
}
}
}
এখানে, একটি DOCX ফাইল তৈরি করা হচ্ছে এবং তাতে টেক্সট যোগ করা হচ্ছে।
যেহেতু Apache POI DOC এবং DOCX উভয় ফরম্যাটের জন্য সমর্থন দেয়, আপনি সহজেই একটি DOC ফাইলকে DOCX ফরম্যাটে কনভার্ট করতে পারেন। তবে, কনভার্সন পদ্ধতি সম্পূর্ণভাবে সরাসরি POI-তে নেই, কিন্তু আপনি কিছু অতিরিক্ত কাজের মাধ্যমে এই কনভার্সন করতে পারবেন। এর জন্য Apache POI-র HWPF (DOC) এবং XWPF (DOCX) ফরম্যাটের সাথে কাজ করার জন্য কোড লেখার প্রয়োজন হবে।
এখানে, একটি সাধারিত কনভার্সন পদ্ধতির উদাহরণ দেওয়া হলো:
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import java.io.*;
public class ConvertDocToDocx {
public static void main(String[] args) throws IOException {
// পুরানো DOC ফাইল লোড করা
HWPFDocument doc = new HWPFDocument(new FileInputStream("old_document.doc"));
// নতুন DOCX ডকুমেন্ট তৈরি করা
XWPFDocument docx = new XWPFDocument();
// DOC ফাইল থেকে টেক্সট নেয়া
String text = doc.getRange().text();
// DOCX ফাইলের Paragraph এ টেক্সট যোগ করা
docx.createParagraph().createRun().setText(text);
// নতুন DOCX ফাইল সেভ করা
try (FileOutputStream out = new FileOutputStream("converted_document.docx")) {
docx.write(out);
}
}
}
এখানে DOC ফাইল থেকে টেক্সট পড়া হচ্ছে এবং তা একটি DOCX ফাইলের মধ্যে লেখা হচ্ছে।
Apache POI লাইব্রেরি ব্যবহারের মাধ্যমে DOC এবং DOCX ফরম্যাটের মধ্যে কমপ্যাটিবিলিটি ম্যানেজ করা সম্ভব, তবে DOCX ফরম্যাটের জন্য এটি আরও কার্যকরী। আপনি HWPF লাইব্রেরি ব্যবহার করে DOC ফাইল ম্যানিপুলেট করতে পারেন এবং XWPF লাইব্রেরি ব্যবহার করে DOCX ফাইলের কনটেন্ট ম্যানিপুলেট করতে পারেন। এছাড়া, DOC ফরম্যাটকে DOCX এ কনভার্ট করতে কিছু অতিরিক্ত কোড প্রয়োজন, তবে এটি সম্ভব। Apache POI-এর মাধ্যমে আপনি বিভিন্ন ফরম্যাটের মধ্যে টেমপ্লেট তৈরি ও কনভার্সন সহ নানা কাজ সহজেই করতে পারবেন।
common.read_more